/***********************************************************************************
 * 文件名： mbre_link.h
 * 作者： 刘言
 * 版本： 1
 * 说明：
 * 		MBRE(ModBusRtuExt) 1.1 通信协议的链路层。
 *      接受来自物理层（端口驱动）的数据，判断数据包合法性和完整性，去除信封（头、长度、校验
 *  码），传送到上一层；
 *      同样，也将来自上一层的数据，封装信封，发到物理层。
 *      连接与断连检测，事件通知。
 * 修改记录：
 * 	2023/4/26: 初版。 刘言。
***********************************************************************************/
#ifndef _MBRE_LINK_H_
#define _MBRE_LINK_H_

#include "mbre_common.h"  


// APIs

// 初始化
// 内部包括了硬件端口驱动的初始化（端口号依据配置文件）
void MbreLink_Init();

// 获取接收到的数据（实际上仅获取了缓存地址）
mbre_data_t *MbreLink_GetReceiveData();

// 获取接收到的数据包长度（数据包的长度数据）
u16 MbreLink_GetLength();

// // 清空接收缓存（仅在缓存满了时需要清空，便于继续接收余下的数据，接收一包完整数据后缓存会被自动处理）
// void MbreLink_ClearBuff();

// 按协议发送一包(帧)数据，需要提供数据区所有数据
void MbreLink_SendPkg(u16 lenght, u8 *dat);

// 由外部调用（一般是UART中断）来通知 Mbre 收到了新的数据（1个字节）。
// 外部调用事件：收到了新的数据（1个字节）
void MbreLink_EvReceivedData(u8 dat);



#endif


